The present invention relates to the field of computer animation. More particularly, the present invention relates to techniques and apparatus for animating and rendering of thin materials such as hair or fur. Many computer graphic images are created by mathematically modeling the interaction of light with a three dimensional scene from a given viewpoint. This process, called rendering, generates a two-dimensional image of the scene from the given viewpoint, and is analogous to taking a photograph of a real-world scene. Animated sequences can be created by rendering a sequence of images of a scene as the scene is gradually changed over time. A great deal of effort has been devoted to making realistic looking rendered images and animations.
Creating hair that moves and looks realistic is a challenge. Individual hairs typically have a large number of degrees of freedom. Additionally, many characters require thousands or millions of hairs. Manually animating each individual hair is typically too time-consuming to be practical. As a result, the motion of hair is often derived from a physics-based simulation. Hair simulations typically represent each hair as a set of masses and spring forces. Simulation forces, such as those representing gravity and wind, are applied to each hair to generate the desired hair motion.
Hair simulations often fail to accurately model the collective behavior and attributes of a set having a large number of hairs. For example, although hair simulations can generate realistic motions for individual hairs, they often fail to produce realistic collective motion for a set having a large number of hairs. One reason for this is that the dynamics of a large set of hairs is greatly affected by the millions of hair to hair collisions. Hair to hair collisions and friction make a set of hairs appear to move as a collective material, rather than millions of isolated elements. However, as each hair can collide with one or more other hairs in numerous locations, simulating hair collisions and friction forces for a set of thousands or millions of hairs is extremely difficult and computationally expensive.
Another collective attribute of a set of hairs is the pose, or intended position, orientation, and shape of the set of hair as a whole. Because hair can occlude or accentuate facial features, it is often a crucial aspect of the performance of a character. Animators often desire to specify a pose of a character model and its hair. Typically, animators do not care about the positions of individual hairs, provided the collective shape of the set of hair matches the desired pose. However, control over a hair simulation is limited to the specification of simulation forces. As a result, controlling the pose for a set of hair in a hair simulation is extremely difficult. Alternatively, the pose of a set of hair can be specified directly; however, this often overconstrains the hair simulation, resulting in implausible-looking hair motion.
The illumination and shading attributes of a set of hairs used for rendering is also a collective attribute. The appearance of each hair is determined in part from the geometric shape of each hair, as well as the shadowing and scattering of light from neighboring hairs. In particular, although a set of hairs includes thousands of separate hairs, it is often perceived having a hair “surface.” It is difficult to determine this collective hair “surface” from thousands of separate hairs and to apply realistic-looking illumination and shading.
It is therefore desirable for a system and method to efficiently determine the realistic-looking collective attributes of large sets of simulated hairs, including: hair to hair collisions and friction; desired hair poses; and hair surface illumination attributes.